<?php
class Campana extends Doctrine_Record {
    public function setTableDefinition() {
        $this->setTableName('campana');
        $this->hasColumn('nombre','string',255);
        $this->hasColumn('logo','string',255);
        $this->hasColumn('banner','string',255);
        $this->hasColumn('email','string',255);
        $this->hasColumn('web','string',255);
        $this->hasColumn('telefono','string',255);
        $this->hasColumn('facebook','string',255);
        $this->hasColumn('twitter','string',255);
        $this->hasColumn('desde','date',array('default','2012-01-01'));
        $this->hasColumn('hasta','date',array('default','2052-01-01'));
        $this->hasColumn('info','string',10000);
        $this->hasColumn('responsable','string',10000);
        $this->hasColumn('id_estado','integer');
        $this->hasColumn('id_marker','integer');
    }

    public function setUp(){
        $this->hasOne('Estado as estado',array(
            'local'=>'id_estado',
            'foreign'=>'id'
        ));
        $this->hasMany('Marker as markers', array(
            'local' => 'id_marker',
            'foreign' => 'id_campana',
            'refClass' => 'Markercampana'
        ));
    }

    //INCIO DE GETERS Y SETERS
    public function getNombre () {
        return utf8_decode($this->_get('nombre'));
    }
    public function setNombre ($nombre) {
        $this->_set('nombre', utf8_encode($nombre));
    }
    
    public function getWeb () {
        $link = $this->_get('web');
        if ($link) {
            if (strpos($link, 'http://') === FALSE)$link = 'http://'.$link;
        }
        return $link;
    }
    
    public function getInfo () {
        return utf8_decode($this->_get('info'));
    }
    public function setInfo ($info) {
        $this->_set('info', utf8_encode($info));
    }
    
    public function getResponsale () {
        return utf8_decode($this->_get('responsable'));
    }
    public function setResponsale ($responsable) {
        $this->_set('responsable', utf8_encode($responsable));
    }
    
     public function getDesde () {
        $fechaArray = explode('-', $this->_get('desde'));
        $fechaArray = array_reverse($fechaArray);
        return implode('-', $fechaArray);
    }
    public function setDesde ($fecha) {
        $fechaArray = explode('-', $fecha);
        $fechaArray = array_reverse($fechaArray);
        $this->_set('desde', implode('-', $fechaArray));
    }
    
    public function getHasta () {
        $fechaArray = explode('-', $this->_get('hasta'));
        $fechaArray = array_reverse($fechaArray);
        return implode('-', $fechaArray);
    }
    public function setHasta ($fecha) {
        $fechaArray = explode('-', $fecha);
        $fechaArray = array_reverse($fechaArray);
        $this->_set('hasta', implode('-', $fechaArray));
    }
    
    public function getMarkers () {
        $q = Doctrine_Query::create()
            ->select('m.*')
            ->from('Marker m')
            ->innerJoin('m.campanas as c')
            ->innerJoin('m.estado as e')
            ->where('c.id = '.$this->id)
            ->andWhere('e.id = '.Estado::visible()->id)
            ->orderBy('m.id');
        return $q->execute();
    }
    //FIN SETERS Y GETERS
    
    public static function listar ($parametros=array()) {
        $defualt = array(
            'estado'=>'%',
            'busqueda'=>'%',
            'cuantos'=>10000,
            'desde'=>0
        );
	$options = $parametros + $defualt;
        $q = Doctrine_Query::create()
            ->select('c.*')
            ->from('Campana c')
            ->innerJoin('c.estado as e')
            ->where('e.id like ?', $options['estado'])
            ->andWhere('e.id <> 3')
            ->andWhere('c.nombre like "%'.$options['busqueda'].'%" or c.responsable like "%'.$options['busqueda'].'%"')
            ->orderBy('c.nombre')
            ->limit($options['cuantos']) //cuantos trae
            ->offset($options['desde']); //a partir de donde empieza a traer
        return $q->execute();
    }
    
    public static function contar ($parametros=array()) {
        $defualt = array(
            'estado'=>'%',
            'busqueda'=>'%',
            'cuantos'=>10000,
            'desde'=>0
        );
	$options = $parametros + $defualt;
        $q = Doctrine_Query::create()
            ->select('c.*')
            ->from('Campana c')
            ->innerJoin('c.estado as e')
            ->where('e.id like ?', $options['estado'])
            ->andWhere('e.id <> 3')
            ->andWhere('c.nombre like "%'.$options['busqueda'].'%" or c.responsable like "%'.$options['busqueda'].'%"');
        $total = $q->execute();
        return $total->count();
    }
    
    public static function toSelect ($objeto=false) {
        $html = '';
        $campanas = self::listar();
        $html .= '<select id="selectCampana" name="campanas[]" multiple="multiple">';
        foreach ($campanas as $campana) {
            $selected = ($objeto && $objeto->inCampana($campana))?'  selected="selected"':'';
            $html .= '<option value="'.$campana->id.'"'.$selected.'>'.$campana->nombre.'</option>';
        }
        $html .= '</select>';
        return $html;
    }
    
    public static function toCheck ($objeto=false) {
        $html = '';
        $campanas = self::listar();
        foreach ($campanas as $campana) {
            //$html .= $objeto->inCategorias($categoria).'<br />';            
            $checked = ($objeto && $objeto->inCampana($campana))?' checked="checked"':'';
            $html .= '<div class="checkCampana">';
            $html .= '<label class="checkbox inline span12" for="campana'.$campana->id.'" style="cursor: pointer">'.$campana->nombre;
            $html .= '<input type="checkbox"'.$checked.' value="'.$campana->id.'" name="campanas[]" id="campana'.$campana->id.'">';
            $html .= '</label>';
            $html .= '</div>';
        }
        return $html;
    }
    
    public function selectEstado ($objeto=false) {
        $visible = Estado::visible();
        $oculta = Estado::noVisible();
        $selectedVisible = ($objeto->id == $visible->id)?'  selected="selected"':'';
        $selectedOculta = ($objeto->id == $oculta->id)?'  selected="selected"':'';
        $html = '
            <select id="selectEstado" name="estado">
                <option value="'.$visible->id.'"'.$selectedVisible.'>'.$visible->contenido.'</option>
                <option value="'.$oculta->id.'"'.$selectedOculta.'>'.$oculta->contenido.'</option>
            </select>
        ';
        return $html;
    }
}
?>